package com.example.daiyinuo.decorator;

/**
 * 在不改变现有对象结构的情况下，动态地给该对象增加一些职责（即增加其额外功能）的模式
 *
 * 优点： - 装饰器是继承的有力补充，比继承灵活，在不改变原有对象的情况下，动态的给一个对象扩展功能，即插即用 - 通过使用不用装饰类及这些装饰类的排列组合，可以实现不同效果 - 完全遵守开闭原则
 *
 * 缺点：装饰模式会增加许多子类，过度使用会增加程序得复杂性
 */
public class Decorator implements IProduct{
    protected IProduct product;
    protected String name;
    public Decorator(IProduct product,String name){
        this.name = name;
        this.product = product;
    }

    public Decorator() {
    }

    @Override
    public void transport() {
        System.out.println("包装");
        if(this.product!=null)
            this.product.transport();
    }
}
